fib=[0,1,1]
for i in range(3,51):
fib.append(fib[-1]+fib[-2])
for i in range(1,51):
fib[i]+=fib[i-1]
n,m=map(int,input().split())
ans=[0]*n
left=m
last=0
for i in range(n):
if ans[i]!=0:
continue
for j in range(i+1,n+1):
size=n-j
if size==1:
perms=1
else:
perms = fib[size - 1] + 1
if perms>=left:
ans[i]=j
break
else:
left-=perms
nlast=ans[i]
t=i+1
while(t<n and ans[t-1]!=last+1):
ans[t]=ans[t-1]-1
t+=1
last=nlast
print(*ans)
Zoos | Build a graph |
Almost correct bracket sequence | Count of integers |
Differences of the permutations | Doctor's Secret |
Back to School | I am Easy |
Teddy and Tweety | Partitioning binary strings |
Special sets | Smallest chosen word |
Going to office | Color the boxes |
Missing numbers | Maximum sum |
13 Reasons Why | Friend's Relationship |
Health of a person | Divisibility |
A. Movement | Numbers in a matrix |
Sequences | Split houses |
Divisible | Three primes |
Coprimes | Cost of balloons |
One String No Trouble | Help Jarvis! |